import {getToken, setToken, removeToken} from "@/utils/auth";
import {login, getUserInfo} from '@/api/user'
// 状态
const state = {
  token: getToken(),
  userInfo: {} // 定义一个空的对象 不是null 因为后边我要开发userInfo的属性给别人用  userInfo.name
}
// 修改状态
const mutations = {
  // 设置用户信息
  setUserInfo(state, userInfo) {
    state.userInfo = {...userInfo} // 用 浅拷贝的方式去赋值对象 因为这样数据更新之后，才会触发组件的更新
  },
  // 删除用户信息
  reomveUserInfo(state) {
    state.userInfo = {}
  },
  // 删除缓存
  removeToken(state) {
    state.token = null
    removeToken()
  }
}
// 执行异步
const actions = {
  async login(context, data) {
    const result = await login(data)
    // context.commit('setToken',result)
  },
  // 退出登录
  Quit(context) {
    context.commit('removeToken')
  },
  // 获取用户资料信息
  // 获取用户资料action
  async getUserInfo(context) {
    const result = await getUserInfo()  // 获取返回值
    context.commit('setUserInfo', result.data.data) // 将整个的个人信息设置到用户的vuex数据中
    // return result // 这里为什么要返回 为后面埋下伏笔
  }
}
export default {
  namespaced: true,
  state,
  mutations,
  actions
}
